<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    闭包：当前作用域有一个引用类型的变量，被外界变量所占用，导致当前作用域的不到释放，就是闭包
    闭包两个作用：
    保护：保护私有变量不会被外界所干扰
    保存：保存私有变量的值

    为什么使用闭包？ 不可以随意被更改+可以在任何地方使用
    1.全局变量，可以随意被更改，但是可以在任何地方使用
    2.私有变量，不可以随意更改，但使用的时候，有域的限制


    <script>
        // var n=10;
        // function fn(){
        //     var n=20;
        //     function f(){
        //         n++;
        //         console.log(n);
        //         //return n;
        //     }
        //     f();
        //     return f;
        // }
        // var x=fn();
        // x();
        // x();
        // //let nn=x();//23
        // //nn++;//24
        // console.log(n);


        // function fn(x){
        //     return function(y){//0x003
        //          x+y;
        //     }
        // }

        // fn(1)(2);
            // fn(1)---》function(y){
            //     return x+y;
            // }  0x003

            //fn(1) (2)---0x003 (2)


            // function fn(x){
            //     return function(y){//0x003
            //         return function(z){
            //             console.log(x+y+z)
            //         }
            //     }
            // }


            // fn(1)(2)(3);//6

            // function fn(i){
            //     return function (n){
            //         console.log(n+(++i));
            //     }
            // }
            // var f=fn(2);
            // f(3);
            // fn(5)(6);
            // fn(7)(8);
            // f(4);

        //     (function(){
        //         function jquery(){
        //         }
        //         //把jquer 这个方法通过window添加属性暴漏到全局
        //         window.jquery=window.$=jquery;
        //     })()

        //    window.$()
        //    window.jquery()


        // var zepto=(function(){

        //      return {
        //         fn:function(){},
        //         .....
        //     }
        // })()

        // var zepto=(function(){

        //     return {
        //        fn:function(){}
        //     }
        // })()

        // console.log(zepto)



    </script>


</body>
</html>